import axios, { AxiosInstance } from 'axios';
import { ElMessage, ElMessageBox } from 'element-plus';
import { Session } from '/@/utils/storage';
import qs from 'qs';

// 配置新建一个 axios 实例
const service: AxiosInstance = axios.create({
	baseURL: import.meta.env.VITE_API_URL,
	timeout: 50000,
	headers: { 'Content-Type': 'application/json' },
	paramsSerializer: {
		serialize(params) {
			return qs.stringify(params, { allowDots: true });
		},
	},
});

// 添加请求拦截器
service.interceptors.request.use(
	(config) => {
		// 在发送请求之前做些什么 token
		if (Session.get('token')) {
			config.headers!['Authorization'] = `${Session.get('token')}`;
		}
		return config;
	},
	(error) => {
		// 对请求错误做些什么
		return Promise.reject(error);
	}
);

// 添加响应拦截器
service.interceptors.response.use(
	(response) => {
		// 对响应数据做点什么
		window.sessionStorage.setItem("data", response.Data)
		return response;
		// const res = response.data;
		// if (res.code && res.code !== 400) {
		// 	// `token` 过期或者账号已在别处登录
		// 	// SYSTEM_1001(1001, "参数不合法"),
		// 	// SYSTEM_1002(1002, "数据异常"),
		// 	// SYSTEM_1003(1003, "非法操作"),
		// 	// SYSTEM_1004(1004, "其他异常"),
		// 	// LOGIN_FAILED(4000, "登陆失败"),
		// 	// AUTH_FAILED(4001, "登陆失败"),
		// 	// FORCIBLY_LOGOFF(4444, "强制退出"),
		// 	// ERROR(5000, "请求失败"),
		// 	// SYSTEM_1005(1005, "请求过于频繁，请稍后重试"),
		// 	// ACCOUNT_CLOSED(4444, "账户已关闭"),
		// 	// OPERATION_FAILED(6001, "操作失败"),
		// 	// OPERATION_NOT_PERMMITTED(6002, "操作不允许"),
		// 	// SEARCH_FAILED(6003, "查询出错了"),
		// 	// INVALID_USERNAME(6101, "用户名错误"),
		// 	// INVALID_PHONE(6102, "手机号错误"),
		// 	// INVALID_EMAIL(6103, "邮箱错误"),
		// 	// INVALID_PASSWORD(6104, "密码不合要求"),
		// 	// INVALID_RANDOM(6105, "随机验证法错误 "),
		// 	// INVALID_SMS(6106, "手机验证码错误"),
		// 	// INVALID_EMAIL_CODE(6107, "邮箱验证码错误"),
		// 	// INVALID_TXPASSWORD(6108, "交易密码错误"),
		// 	// INVALID_LOGIN_INFO(6109, "登录信息错误"),
		// 	// FAILURE_SEND_SMS(6110, "短信发送失败"),
		// 	// SERVER_BUSY_SEND_SMS(6111, "短信发送请求太频繁"),
		// 	// FAILURE_SEND_EMAIL(6112, "邮件发送失败"),
		// 	// SERVER_BUSY_SEND_EMAIL(6113, "短信发送请求太频繁"),
		// 	// TOO_MANY_PASS_VERIFICATIONS(6114, "登录密码验证次数太多"),
		// 	// ERROR_LOGIN_PASSWORD(6115, "登录密码错误"),
		// 	// ERROR_PASSWORD(6116, "密码错误"),
		// 	// FAILURE_IDENTIFICATION(6117, "认证失败"),
		// 	// NOT_FOUND_SKU(6201, "商品不存在"),
		// 	// INSUFFICIENT_BALANCE(6202, "账户保证金余额不足"),
		// 	// NOT_ENOUGH_STOCK(6203, "出库数量超出当前库存 "),
		// 	// ACCOUNT_ALREADY_EXISTS(6205, "账号已经存在 "),
		// 	// FILEPATH_CANNOT_NULL(6401, "文件路径不能为空 "),
		// 	// INVALID_FILEPATH(6402, "文件路径不合法 "),
		// 	// FILEPATH_NOT_EXISTS(6403, "文件路径不存在 "),
		// 	// SCAN_RESULT_NOT_FOUND(6501, "扫码结果不存在"),
		// 	// ILLEGAL_SCAN_ARGUMENT(6502, "扫码参数不合法 ");

		// 	// if (res.code === 401 || res.code === 4001) {
		// 	// 	Session.clear(); // 清除浏览器全部临时缓存
		// 	// 	window.location.href = '/'; // 去登录页
		// 	// 	ElMessageBox.alert('登录失效，请重新登录', '提示', {}).then((
		// 	// 	) => {}).catch(() => {});
		// 	// // 403 
		// 	// }
		// 	//  else if (res.code === 403) {
		// 	// 	window.location.href = '/'; // 去登录页
		// 	// }else {
		// 	// 	window.location.href = '/'; // 去登录页
		// 	// }
		// 	// return Promise.reject(service.interceptors.response);
		// 	return Promise.reject(response.data.message);
		// } else {
		// 	return res;
		// }
	},
	(error) => {
		console.log(error)
		return
		if (error.response.status == 401) {
			Session.clear(); // 清除浏览器全部临时缓存
			window.location.href = '/'; // 去登录页
			ElMessageBox.alert(error.response.data.message, '提示', {}) .then(() => {}) .catch(() => {});
		}
		// 对响应错误做点什么
		if (error.message.indexOf('timeout') != -1) {
			ElMessage.error('网络超时');
		} else if (error.message == 'Network Error') {
			ElMessage.error('网络连接错误');
		} else {
			if (error.response.data) ElMessage.error(error.response.data.message);
			else ElMessage.error('接口路径找不到');
		}
		return Promise.reject(error.response.data.message);
	}
);

// 导出 axios 实例
export default service;
